// ==========================================================================
// GFast自动生成model操作代码。
// 生成日期：2024-11-11 20:52:34
// 生成路径: internal/app/system/model/users.go
// 生成人：王中阳
// desc:用户
// company:云南奇讯科技有限公司
// ==========================================================================

package model

import (
	"github.com/gogf/gf/v2/os/gtime"
	"github.com/gogf/gf/v2/util/gmeta"
	comModel "github.com/tiger1103/gfast/v3/internal/app/common/model"
)

// UsersInfoRes is the golang structure for table users.
type UsersInfoRes struct {
	gmeta.Meta        `orm:"table:users"`
	Id                int                 `orm:"id,primary" json:"id" dc:""`                             //
	Username          string              `orm:"username" json:"username" dc:"用户名"`                      // 用户名
	Phone             string              `orm:"phone" json:"phone" dc:"手机号"`                            // 手机号
	UserType          int                 `orm:"user_type" json:"userType" dc:"是否注册跑手，0表示否，1表示是"`        // 是否注册跑手，0表示否，1表示是
	Openid            string              `orm:"openid" json:"openid" dc:"微信授权登录获取的唯一标识"`                // 微信授权登录获取的唯一标识
	Unionid           string              `orm:"unionid" json:"unionid" dc:"微信多平台唯一标识，用于在不同微信平台间识别同一用户"` // 微信多平台唯一标识，用于在不同微信平台间识别同一用户
	Gender            int                 `orm:"gender" json:"gender" dc:"性别，1表示男，2表示女，0表示未知"`           // 性别，1表示男，2表示女，0表示未知
	Country           string              `orm:"country" json:"country" dc:"国家"`                         // 国家
	Province          string              `orm:"province" json:"province" dc:"省份"`                       // 省份
	City              string              `orm:"city" json:"city" dc:"城市"`                               // 城市
	AvatarUrl         string              `orm:"avatar_url" json:"avatarUrl" dc:"用户头像的URL地址"`            // 用户头像的URL地址
	IsBan             int                 `orm:"is_ban" json:"isBan" dc:"是否被封禁，0表示未被封禁，1表示被封禁"`          // 是否被封禁，0表示未被封禁，1表示被封禁
	Score             int                 `orm:"score" json:"score" dc:"用户积分"`                           // 用户积分
	SchoolId          int                 `orm:"school_id" json:"schoolId" dc:"学校ID"`                    // 学校ID
	LinkedSchoolId    *LinkedUsersSchools `orm:"with:id=school_id" json:"linkedSchoolId"`
	IsFirst           int                 `orm:"is_first" json:"isFirst" dc:"是否首次登录"`                     // 是否首次登录
	PayQrCodePath     string              `orm:"pay_qr_code_path" json:"payQrCodePath" dc:"支付二维码的存储路径"`   // 支付二维码的存储路径
	Wallet            float64             `orm:"wallet" json:"wallet" dc:"钱包余额"`                          // 钱包余额
	Diamonds          int                 `orm:"diamonds" json:"diamonds" dc:"抽奖总金币"`                     // 抽奖总金币
	Balance           float64             `orm:"balance" json:"balance" dc:"钱包余额"`                        // 钱包余额
	TotalLotteryCount string              `orm:"total_lottery_count" json:"totalLotteryCount" dc:"抽奖总次数"` // 抽奖总次数
	CreatedAt         *gtime.Time         `orm:"created_at" json:"createdAt" dc:"创建时间"`                   // 创建时间
	UpdatedAt         *gtime.Time         `orm:"updated_at" json:"updatedAt" dc:"更新时间"`                   // 更新时间
	DeletedAt         *gtime.Time         `orm:"deleted_at" json:"deletedAt" dc:"删除时间"`                   // 删除时间
}
type LinkedUsersSchools struct {
	gmeta.Meta `orm:"table:schools"`
	Id         int    `orm:"id" json:"id" dc:""`                 //
	Schoolname string `orm:"schoolname" json:"schoolname" dc:""` //
}

type UsersListRes struct {
	Id                int                 `json:"id" dc:""`
	Username          string              `json:"username" dc:"用户名"`
	Phone             string              `json:"phone" dc:"手机号"`
	UserType          int                 `json:"userType" dc:"是否注册跑手，0表示否，1表示是"`
	Openid            string              `json:"openid" dc:"微信授权登录获取的唯一标识"`
	Unionid           string              `json:"unionid" dc:"微信多平台唯一标识，用于在不同微信平台间识别同一用户"`
	Gender            int                 `json:"gender" dc:"性别，1表示男，2表示女，0表示未知"`
	Country           string              `json:"country" dc:"国家"`
	Province          string              `json:"province" dc:"省份"`
	City              string              `json:"city" dc:"城市"`
	AvatarUrl         string              `json:"avatarUrl" dc:"用户头像的URL地址"`
	IsBan             int                 `json:"isBan" dc:"是否被封禁，0表示未被封禁，1表示被封禁"`
	Score             int                 `json:"score" dc:"用户积分"`
	SchoolId          int                 `json:"schoolId" dc:"学校ID"`
	LinkedSchoolId    *LinkedUsersSchools `orm:"with:id=school_id" json:"linkedSchoolId" dc:"学校ID"`
	IsFirst           int                 `json:"isFirst" dc:"是否首次登录"`
	PayQrCodePath     string              `json:"payQrCodePath" dc:"支付二维码的存储路径"`
	Wallet            float64             `json:"wallet" dc:"钱包余额"`
	Diamonds          int                 `json:"diamonds" dc:"抽奖总金币"`
	Balance           float64             `json:"balance" dc:"钱包余额"`
	TotalLotteryCount string              `json:"totalLotteryCount" dc:"抽奖总次数"`
	CreatedAt         *gtime.Time         `json:"createdAt" dc:"创建时间"`
}

// UsersSearchReq 分页请求参数
type UsersSearchReq struct {
	comModel.PageReq
	Id                string `p:"id" dc:""`                                                                   //
	Username          string `p:"username" dc:"用户名"`                                                          //用户名
	Phone             string `p:"phone" dc:"手机号"`                                                             //手机号
	UserType          string `p:"userType" v:"userType@integer#是否注册跑手，0表示否，1表示是需为整数" dc:"是否注册跑手，0表示否，1表示是"`   //是否注册跑手，0表示否，1表示是
	Openid            string `p:"openid" dc:"微信授权登录获取的唯一标识"`                                                  //微信授权登录获取的唯一标识
	Unionid           string `p:"unionid" dc:"微信多平台唯一标识，用于在不同微信平台间识别同一用户"`                                    //微信多平台唯一标识，用于在不同微信平台间识别同一用户
	Gender            string `p:"gender" v:"gender@integer#性别，1表示男，2表示女，0表示未知需为整数" dc:"性别，1表示男，2表示女，0表示未知"`   //性别，1表示男，2表示女，0表示未知
	Country           string `p:"country" dc:"国家"`                                                            //国家
	Province          string `p:"province" dc:"省份"`                                                           //省份
	City              string `p:"city" dc:"城市"`                                                               //城市
	AvatarUrl         string `p:"avatarUrl" dc:"用户头像的URL地址"`                                                  //用户头像的URL地址
	IsBan             string `p:"isBan" v:"isBan@integer#是否被封禁，0表示未被封禁，1表示被封禁需为整数" dc:"是否被封禁，0表示未被封禁，1表示被封禁"` //是否被封禁，0表示未被封禁，1表示被封禁
	Score             string `p:"score" v:"score@integer#用户积分需为整数" dc:"用户积分"`                                 //用户积分
	SchoolId          string `p:"schoolId" v:"schoolId@integer#学校ID需为整数" dc:"学校ID"`                           //学校ID
	IsFirst           string `p:"isFirst" v:"isFirst@integer#是否首次登录需为整数" dc:"是否首次登录"`                         //是否首次登录
	PayQrCodePath     string `p:"payQrCodePath" dc:"支付二维码的存储路径"`                                              //支付二维码的存储路径
	Wallet            string `p:"wallet" v:"wallet@float#钱包余额需为浮点数" dc:"钱包余额"`                                //钱包余额
	Diamonds          string `p:"diamonds" v:"diamonds@integer#抽奖总金币需为整数" dc:"抽奖总金币"`                         //抽奖总金币
	Balance           string `p:"balance" v:"balance@float#钱包余额需为浮点数" dc:"钱包余额"`                              //钱包余额
	TotalLotteryCount string `p:"totalLotteryCount" dc:"抽奖总次数"`                                               //抽奖总次数
	CreatedAt         string `p:"createdAt" v:"createdAt@datetime#创建时间需为YYYY-MM-DD hh:mm:ss格式" dc:"创建时间"`     //创建时间
}

// UsersSearchRes 列表返回结果
type UsersSearchRes struct {
	comModel.ListRes
	List []*UsersListRes `json:"list"`
}

// 相关连表查询数据
type LinkedUsersDataSearchRes struct {
	LinkedUsersSchools []*LinkedUsersSchools `json:"linkedUsersSchools"`
}

// UsersAddReq 添加操作请求参数
type UsersAddReq struct {
	Username          string  `p:"username" v:"required#用户名不能为空" dc:"用户名"`
	Phone             string  `p:"phone"  dc:"手机号"`
	UserType          int     `p:"userType"  dc:"是否注册跑手，0表示否，1表示是"`
	Openid            string  `p:"openid"  dc:"微信授权登录获取的唯一标识"`
	Unionid           string  `p:"unionid"  dc:"微信多平台唯一标识，用于在不同微信平台间识别同一用户"`
	Gender            int     `p:"gender"  dc:"性别，1表示男，2表示女，0表示未知"`
	Country           string  `p:"country"  dc:"国家"`
	Province          string  `p:"province"  dc:"省份"`
	City              string  `p:"city"  dc:"城市"`
	AvatarUrl         string  `p:"avatarUrl" v:"required#用户头像的URL地址不能为空" dc:"用户头像的URL地址"`
	IsBan             int     `p:"isBan"  dc:"是否被封禁，0表示未被封禁，1表示被封禁"`
	Score             int     `p:"score"  dc:"用户积分"`
	SchoolId          int     `p:"schoolId"  dc:"学校ID"`
	IsFirst           int     `p:"isFirst"  dc:"是否首次登录"`
	PayQrCodePath     string  `p:"payQrCodePath"  dc:"支付二维码的存储路径"`
	Wallet            float64 `p:"wallet"  dc:"钱包余额"`
	Diamonds          int     `p:"diamonds"  dc:"抽奖总金币"`
	Balance           float64 `p:"balance"  dc:"钱包余额"`
	TotalLotteryCount string  `p:"totalLotteryCount"  dc:"抽奖总次数"`
}

// UsersEditReq 修改操作请求参数
type UsersEditReq struct {
	Id                int     `p:"id" v:"required#主键ID不能为空" dc:""`
	Username          string  `p:"username" v:"required#用户名不能为空" dc:"用户名"`
	Phone             string  `p:"phone"  dc:"手机号"`
	UserType          int     `p:"userType"  dc:"是否注册跑手，0表示否，1表示是"`
	Openid            string  `p:"openid"  dc:"微信授权登录获取的唯一标识"`
	Unionid           string  `p:"unionid"  dc:"微信多平台唯一标识，用于在不同微信平台间识别同一用户"`
	Gender            int     `p:"gender"  dc:"性别，1表示男，2表示女，0表示未知"`
	Country           string  `p:"country"  dc:"国家"`
	Province          string  `p:"province"  dc:"省份"`
	City              string  `p:"city"  dc:"城市"`
	AvatarUrl         string  `p:"avatarUrl" v:"required#用户头像的URL地址不能为空" dc:"用户头像的URL地址"`
	IsBan             int     `p:"isBan"  dc:"是否被封禁，0表示未被封禁，1表示被封禁"`
	Score             int     `p:"score"  dc:"用户积分"`
	SchoolId          int     `p:"schoolId"  dc:"学校ID"`
	IsFirst           int     `p:"isFirst"  dc:"是否首次登录"`
	PayQrCodePath     string  `p:"payQrCodePath"  dc:"支付二维码的存储路径"`
	Wallet            float64 `p:"wallet"  dc:"钱包余额"`
	Diamonds          int     `p:"diamonds"  dc:"抽奖总金币"`
	Balance           float64 `p:"balance"  dc:"钱包余额"`
	TotalLotteryCount string  `p:"totalLotteryCount"  dc:"抽奖总次数"`
}
